package com.vhall.component.controller.data.facade;

import com.vhall.component.entity.data.vo.DataExportParamVO;
import com.vhall.component.entity.data.vo.ExportListRspVO;
import com.vhall.component.entity.data.vo.ExportMessageReqVO;
import com.vhall.component.entity.data.vo.ExportReservationReqVO;
import com.vhall.component.entity.export.vo.ExportUvPreviewPageReqVO;
import com.vhall.component.plugin.common.annotation.TokenAuth;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;

/**
 * @author guoxin.wang
 * @date 2021-06-18 13:37
 */
@FeignClient(value = "DataExportFacade", path = "/v4/datacenter/console/stat")
public interface DataExportFacade {

    /**
     * 导出信息列表
     *
     * @param reqVO
     * @return
     */
    @PostMapping(value = "/export-list")
    ExportListRspVO exportListAction(@Validated DataExportParamVO reqVO);

    /**
     * 导出pv信息
     *
     * @param reqVO
     * @return
     */
    @PostMapping(value = "/export-pv")
    String exportPvAction(@Validated DataExportParamVO reqVO);

    /**
     * 导出uv信息
     *
     * @param reqVO
     * @return
     */
    @PostMapping(value = "/export-uv")
    String exportUvAction(@Validated DataExportParamVO reqVO);

    /**
     * 导出聊天信息
     *
     * @param reqVO
     * @return
     */
    @PostMapping(value = "/export-message")
    Boolean exportMessage(@Validated ExportMessageReqVO reqVO);

    /**
     * 导出预约信息
     *
     * @param reqVO
     * @return
     */
    @PostMapping(value = "/export-reservation")
    Boolean exportReservation(@Validated ExportReservationReqVO reqVO);



    /**
     * 导出 观看总PV(APP+H5) watchPvH5AddApp
     *
     * @param reqVO
     * @return
     */
    @PostMapping(value = "/export-watchPvH5AddApp")
    Boolean exportWatchPvH5AddApp(@Validated DataExportParamVO reqVO);


    /**
     * 导出 APP端观看PV watchPvApp
     *
     * @param reqVO
     * @return
     */
    @PostMapping(value = "/export-watchPvApp")
    Boolean exportWatchPvApp(@Validated DataExportParamVO reqVO);


    /**
     * 导出 产品/商品  product
     *
     * @param reqVO
     * @return
     */
    @PostMapping(value = "/export-product")
    Boolean exportProduct(@Validated DataExportParamVO reqVO);

    /**
     * 导出商品点击详情
     */
    @PostMapping(value = "/export-product-click")
    Boolean exportProductClick(@Validated DataExportParamVO reqVO);

    /**
     * 导出 挂件 pendant
     *
     * @param reqVO
     * @return
     */
    @PostMapping(value = "/export-pendant")
    Boolean exportPendant(@Validated DataExportParamVO reqVO);

    /**
     * 导出挂件点击详情
     *
     * @param reqVO
     * @return
     */
    @PostMapping(value = "/export-pendant-click")
    Boolean exportPendantClick(@Validated DataExportParamVO reqVO);

    /**
     * 导出 播放量趋势   play_volume_trend
     */
    @PostMapping(value = "/export-play_volume_trend")
    Boolean exportplayVolumeTrend(@Validated DataExportParamVO reqVO);

    /**
     * 导出预告页访问人数
     * uv_preview_page
     * @param reqVO
     * @return
     */
    @TokenAuth
    @PostMapping(value = "/export-uvPreviewPage")
    Boolean exportUvPreviewPage(@Validated ExportUvPreviewPageReqVO reqVO);
}
